"""
学习torch的api功能
"""

import torch


def learn_torch_api():
    # 创建一个向量tensor
    t1 = torch.tensor([1, 2, 3])
    print(t1)


def auto_grad():
    """
    利用torch框架自动对 z= log(3x+4y)^2 求梯度
    :return:
    """
    x = torch.tensor([1.0], requires_grad=True)  # 创建一个标量tensor
    y = torch.tensor([1.0], requires_grad=True)  # 创建一个标量tensor
    # 分步解析式子
    v = 3 * x + 4 * y
    u = torch.square(v)
    z = torch.log(u)
    # 自动求x=1的梯度和y=1的梯度
    z.backward()

    print("x的梯度:", x.grad)
    print("y的梯度:", y.grad)


# learn_torch_api()
auto_grad()